package com.zrrd.product.controller;

import com.zrrd.common.result.Result;
import jodd.io.FileNameUtil;
import org.csource.common.MyException;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@RestController
@RequestMapping("/admin/product")
public class FileUploadController {

    @Value("${fileServer.url}")
    private String path;

    //文件上传
    @PostMapping("/fileUpload")
    public Result<String> upload(MultipartFile file) throws MyException, IOException {
        //1.读取本地的配置文件 转为File对象（初始化FastDFS的时候 需要的参数类型 就是一个File的字符串对象）
        String configFile = this.getClass().getResource("/tracker.conf").getFile();
        //2.判断读取到的配置文件 是否为空
        String url = null;
        if (configFile != null) {
            //3.初始化
            ClientGlobal.init(configFile);
            //4.创建上传的客户端对象
            TrackerClient client = new TrackerClient();
            //5.创建服务端的对象
            TrackerServer server = client.getConnection();
            //6.创建执行者的对象
            StorageClient1 storageClient1 = new StorageClient1(server, null);
            //7.执行上传操作
            url = storageClient1.upload_appender_file1(file.getBytes(), FileNameUtil.getExtension(file.getOriginalFilename()), null);
            System.out.println("文件上传成功 位置是：" + path+url);
        }
        return Result.ok(path+url);
    }
}
